home *** CD-ROM | disk | FTP | other *** search
/ Over 1,000 Windows 95 Programs / Over 1000 Windows 95 Programs (Microforum) (Disc 1).iso / 0767 / dwsock13.txt < prev    next >
Text File  |  1995-07-17  |  9KB  |  210 lines

  1. July 17, 1995
  2.  
  3. DWINSOCK V1.3
  4. -------------
  5.  
  6. A Windows Socket interface component for use with Borland Delphi.
  7.  
  8. By  Ulf S÷derberg,  ulfs@sysinno.se
  9.     Marc Palmer,    marc@landscap.demon.co.uk
  10.     Keith Hawes,    khawes@ccmail.com
  11.  
  12. This is a short description of the DWinSock component for Borland Delphi
  13. that is contained in the file DWSOCK13.ZIP.
  14.  
  15. We would like to create a Delphi installable help file sometime soon.
  16. (Perhaps some one at ForeHelp will send us a copy)
  17. For now, you have to rely on this description and on the contents of the
  18. source files.
  19.  
  20. FILE CONTENTS
  21. -------------
  22. Files that originally came from PASOCK10.ZIP that has been changed by me:
  23. WINSOCK.INC Part of the old WINSOCK.PAS (included in DWINSOCK.PAS)
  24. WINSOCK.IF  Part of the old WINSOCK.PAS (included in DWINSOCK.PAS)
  25. WINSOCK.IMP Part of the old WINSOCK.PAS (included in DWINSOCK.PAS)
  26. ERROR.INC   Part of the old WINSOCK.PAS (included in DWINSOCK.PAS)
  27.  
  28. Original work by myself:
  29. DWINSOCK.DCR Contains two component palette bitmaps.
  30. DWINSOCK.PAS The source code of the component.
  31. DWINSOCK.DCU The compiled unit.
  32.  
  33. THE COMPONENTS IN DWINSOCK
  34. --------------------------
  35. DWinSock contains two components which are named TClientSocket and
  36. TServerSocket. As the names implies, they are to be used in client or
  37. server applications.
  38.  
  39. TClientSocket Properties
  40.   --------       Design Time
  41.   Address        address of remote host, a string like '127.0.0.1'
  42.   Host           name of remote host, a string
  43.   Options        defines the actions the socket will respond to
  44.     csoRead      Respond to Reading
  45.     csoWrite     Respond to Writing
  46.     csoOOB       Respond to Out Of Band data
  47.   Name           Standard TComponent property
  48.   Port           port number, an integer
  49.   Service        name of port, a string
  50.   Tag            Standard TComponent property
  51.   TimeOut        Time out value in seconds (0 for no time out)
  52.   --------       Run Time & read only
  53.   Conn           current TSocket
  54.   Handle         current window handle, used to receive messages from WinSock
  55.   Description    name of underlying WinSock
  56.  
  57. TClientSocket Events
  58.   OnConnect      Connection is successful
  59.   OnDisconnect   Host disconnected
  60.   OnInfo         Progress notification
  61.   OnRead         Incoming Data
  62.   OnWrite        Write completed
  63.  
  64. TClientSocket Methods
  65.   Close          Disconnect form the host
  66.   Connected      True when the socket is connected to the host
  67.   Info           Notify of Progress (Causes an OnInfo event)
  68.   LocalHost      Name of yourself
  69.   LookupName     Gets the address of a host in WinSock format
  70.   LookupNameStr  Gets the address of a host in a string like '127.0.0.1'
  71.   LookupService  Get the Port number of a service
  72.   Open           Attempt to connect to the Host
  73.   Reverse        Reverse lookup an address (returns the host name)
  74.  
  75. TServerSocket Properties
  76.   --------       Design Time
  77.   Address        Address of the clients to connect with, '0.0.0.0' for all
  78.   ClientOptions  Defines the actions the socket will respond to
  79.     csoRead      Respond to Reading
  80.     csoWrite     Respond to Writing
  81.     csoOOB       Respond to Out Of Band data
  82.   MaxConnections Maximum allowable number of connections
  83.   Name           Standard TComponent property
  84.   Port           Port number, an integer
  85.   Service        Name of port, a string
  86.   Tag            Standard TComponent property
  87.   --------       Run Time & read only
  88.   Conn           The Server's TSocket
  89.   Conns          TList of client sockets
  90.   Handle         Current window handle, used to receive messages from WinSock
  91.   Description    Name of underlying WinSock
  92.  
  93. TServerSocket Events
  94.   OnAccept       Incoming connection accepted
  95.   OnDisconnect   Connection disconnected
  96.   OnInfo         Progress notification
  97.   OnRead         Incoming Data
  98.   OnWrite        Write completed
  99.  
  100. TServerSocket Methods
  101.   Client         Returns the TSocket of a client in the Conns list
  102.   ClientCount    The number of Clients in the Conns list
  103.   Close          Disconnect form the host
  104.   CloseDown      Close all Connections and server
  105.   Info           Notify of Progress (Causes an OnInfo event)
  106.   Listen         Listen for incoming connections
  107.   LocalHost      Name of yourself
  108.   LookupName     Gets the address of a host in WinSock format
  109.   LookupNameStr  Gets the address of a host in a string like '127.0.0.1'
  110.   LookupService  Get the Port number of a service
  111.   Reverse        Reverse lookup an address (returns the host name)
  112.  
  113.  
  114. OTHER OBJECTS
  115. -------------
  116. Both TClientSocket and TServerSocket are derived from the class TSoskCtrl.
  117. TSockCtrl uses an object called TSocket which contains the connection status
  118. like IP address and port number. TSocket has several methods that you may call
  119. via the Conn property, they are:
  120.  
  121.   --------       Information
  122.   BytesSent      The number of bytes send from the last Send or Text := string
  123.   InCount        Return amount of data that can be currently read from the port
  124.   LocalAddress   Return your address
  125.   LocalPort      Return your port number for a connection.
  126.   RemoteHost     Return the remote host name.
  127.   RemoteAddress  Return the remote IP address.
  128.   RemotePort     Return the remote port number.
  129.   --------       I/O
  130.   Recv           Receive a buffer
  131.   Send           Send a buffer
  132.   Text           Property: Send and receive text from the port:
  133.                  Send: Text := 'Send this';
  134.                  Recv: Receved_This := Text;
  135.  
  136. EXCEPTIONS
  137. ----------
  138. If anything goes wrong inside you will get an exception of type ESockError with
  139. a message indicating what kind of error that cause the exception.
  140.  
  141. SUMMARY
  142. -------
  143. This was a very brief description of DWINSOCK. As you can see from the source
  144. files it does not at all use all functions of Windows Sockets but it provides
  145. a quick solution to get into WinSock programming with Delphi. And covers enough
  146. of the basics to handle most applications.
  147.  
  148. A sample application called NETTIME that is a time client has been included as
  149. an example of using dWinSock It gets the current time of day from a time 
  150. server.
  151.  
  152. You may use DWINSOCK any way you like but don't blame us.
  153.  
  154. Suggestions may be emailed to any of the folks listed at the beginning of this
  155. document.
  156.  
  157. ------------------------------------------------------------------------------
  158. Revision History
  159. Helpful hints on converting from one version to the next indicated by **
  160. ------------------------------------------------------------------------------
  161.   V1.3  950717 The Socket Version.
  162.         . Added bitmaps to components, added CloseDown procedure to server,
  163.         . Stopped Server from accepting  >MAXCONN connections.
  164.         . Replaced TClientEvent and TServerEvent with TSocketEvent which passes
  165.           a TSocket reference instead of connection id.
  166.           ** A Change in the parameters replace "cid : integer" with
  167.              "Socket : TSocket".  Delphi will complain of loading of the form
  168.              until you make this change to all of your On* handlers except
  169.              onInfo
  170.           ** This is a big change from the previous versions. Before you needed 
  171.               code like "ServerSocket.Client[cid].method" now you can just use 
  172.              "Socket.Method". 
  173.         . Also changed TClientSocket.Open and TServerSocket.Listen to take 
  174.           one more argument which is of type TSocketClass. The creation of 
  175.           FConn for TClientSocket and FConns array for TServerSocket is now 
  176.           done in the Open and Listen procedures when you know what kind of 
  177.           socket you want.
  178.           ** Add TSocket to the parameter list in your calls
  179.         . Moved the common properties (On from Client & Server into TSockCtrl.
  180.         . Numerous changes to make Info notifications work better and added a
  181.           few new ones.
  182.         . Introduced time out handling. Set the TimeOut property of the socket
  183.           classes at design time to set how many seconds it will take before a
  184.           time out is declared. The OnTimeOut event is called when this 
  185.           happens. 
  186.           ** In the handler you should call Close. Not sure about Server 
  187.              handling yet.
  188.         . Replaced TServerSocket.FConns array with a TSocketList
  189.           (derived from TList). Incoming connections are no longer limited by
  190.           MAXCONN. There is a MaxConnections property for limiting incoming
  191.           connections.
  192.         . Added TClientSocket.Options and TServerSocket.ClientOptions
  193.           properties. These determine the mask used for the WSAAsyncSelect
  194.           calls to the corresponding sockets.
  195.         . TSockCtrl now inherits from TComponent. (Yea!, less overhead)
  196.         . TSockets are deleted from server.FConns on close.
  197.         . Correct nl not being set bugs in several methods.
  198.         . Moved LookupName and LookupService from TSocket to TSockCtrl
  199.           ** Remove reference to Conn "ASocket.Conn.LookupName" becomes
  200.              "ASocke.LookupName".
  201.         . Added LookupNameStr to return the address as a string.
  202.         . Moved RecvText and SendText to TSocket's Private section.
  203.           ** Use the Text property.
  204.  
  205.   V1.2  950410  Added Address property to server.
  206.   V1.1  950407  Corrected TServerSocket bug.
  207.   V1.0  950404  First release.
  208.  
  209.  
  210.